Zadig 文档
Zadig
教程
博客
论坛
关于
中文英文
Zadig
教程
博客
论坛
关于
Zadig v5.0
Loading...
     编辑文档
     反馈问题
     社区讨论

    本页导航

    代码审查

    本文介绍如何使用 Zadig 的代码审查。代码审查分为 AI 审查、Sonar 扫描和自定义扫描,目前支持以下功能:

    • 支持 AI 审查:内置 AI 审查,支持规则配置,审查结果回写 MR 评论区
    • 支持 Sonar 扫描:使用 SonarQube 对代码进行扫描,可基于扫描结果配置质量门禁检查,并一键跳转到 Sonar 系统分析扫描结果
    • 支持自定义扫描:使用自定义工具对所有语言的代码进行扫描
    • 支持对多个代码仓库进行代码扫描
    • 支持基于代码变更自动触发代码扫描运行
    • 支持将代码扫描执行结果通知到钉钉、企业微信、飞书中

    # 新建代码审查

    访问项目 -> 代码审查,点击新建代码审查后选择扫描类型并填写代码库信息。

    img

    # AI 审查

    AI 审查基于已集成的大模型,对代码变更进行审查,识别缺陷与风险。审查完成后,结果可回写到 GitLab / GitHub 的 MR / PR 评论区。

    使用前请先完成 AI 服务 集成。

    # 配置

    新建代码审查时,扫描类型选择 AI 审查。

    # 扫描规则

    仓库审查规则配置,支持配置多个规则,每个规则按照 Glob 路径可配置多个检查项。当仓库审查规则和全局审查规则适用范围冲突时,优先使用仓库审查规则。

    img

    支持将仓库规则放在代码库中管理,规则文件路径为 {代码库名称}/.zadig-review/rules.json ,规则文件内容示例参考如下:

    .zadig-review/rules.json 示例:

    {
      "include": [
        "src/**/*.go"
      ],
      "exclude": [
        "**/*.lock",
        "**/vendor/**",
        "**/generated/**"
      ],
      "rules": [
        {
          "path": "**/*.go",
          "rule": ".zadig-review/docs/go-review.md",
          "merge_system_rule": true
        }
      ]
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

    .zadig-review/docs/go-review.md 示例:

    Review Go changes for concrete correctness and maintainability risks:
    
    Verify error values are handled and wrapped without losing actionable context.
    Check goroutine, channel, mutex, timer, and context lifecycles for leaks or races.
    Preserve API compatibility and established zero-value behavior.
    Confirm resources are closed on every return path.
    Require focused tests for changed boundary conditions and failure paths.
    
    1
    2
    3
    4
    5
    6
    7

    # 扫描范围

    使用 Glob 路径表达限定 AI 审查的文件范围。

    img

    # 自动触发

    开启自动触发后,当有新的 MR / PR 创建时,会自动触发 AI 审查。

    img

    # 通知配置

    具体配置参考 工作流通知。

    img

    # 高级配置

    img

    • 超时时间:若超过设置的时间阈值后审查仍未结束,则视为超时失败
    • 集群选择:选择代码审查任务运行时所使用的集群资源,其中本地集群指 Zadig 系统所在的集群,参考集群管理集成更多集群资源
    • 调度策略:选择集群调度策略,默认使用随机调度策略,集群调度策略管理参考 设置调度策略
    • 任务标签:配置审查任务执行的 Pod 资源标签
    • 任务注解:配置审查任务执行的 Pod 资源注解

    # 使用

    选择具体的 AI 审查任务 -> 点击执行 或者直接提交 MR / PR,可对指定分支和 PR 中的代码进行审查。

    审查完成后:

    • 可在任务详情中查看审查结果
    • 结果会自动回写到 GitLab / GitHub 的 MR 评论区

    本地 IDE 或 CI 场景也可使用开源 CLI 工具,参考 zadig-review-agent(opens new window)。

    # Sonar 扫描

    使用 SonarQube 对代码进行静态扫描,扫描结果上传到指定的 Sonar 系统。更多实践参考 Sonar 扫描最佳实践。

    # 配置

    新建代码审查时,扫描类型选择 Sonar 扫描。

    img

    # 基本信息

    img

    • 名称:代码扫描名称,同一项目下不允许重复
    • 基础设施:支持在 Kubernetes 和主机上执行代码扫描任务
    • 扫描环境:执行扫描任务时的具体运行环境。系统已内置支持该工具的环境 sonar,选择 sonar 即可
    • 依赖的软件包:指定扫描过程中需要用到的各类软件包工具,比如不同版本的 Java、Go、Node 等
      • 选择软件包的过程中需要注意多个软件包之间的依赖关系,按照顺序进行安装。例如:Govendor 依赖 Go,那么请先选 Go,再选择 Govendor
      • 平台已内置一些常见的软件包,如果有其他软件包或者版本需求,系统管理员可以在软件包管理中配置其安装脚本
    • Sonar 地址:需要事先在系统中集成 Sonar,参考 Sonar 集成。当代码扫描执行完成后,Zadig 会将结果上传到此处指定的系统中

    # 代码信息

    为代码扫描配置代码信息,代码扫描执行时将按照指定的配置来拉取代码。支持的代码源参考 代码源信息,代码信息中的具体字段说明参考 代码信息字段说明。

    # 变量

    包括系统内置变量和用户自定义变量,可在扫描脚本中直接使用。

    提示:在 扫描脚本 中添加 env 命令可查看所有构建变量。

    内置变量

    内置变量及其描述说明如下:

    变量名称描述
    SONAR_URLSonar Server 的访问地址
    WORKSPACE当前代码扫描的工作目录
    PROJECT项目标识
    TASK_ID代码扫描任务的 ID
    TASK_URL代码扫描任务的 URL
    CI值恒等于 true,可视需要使用,比如用于判断是 CI 脚本,还是其他脚本
    Zadig值恒等于 true,可视需要使用,比如用于判断是否在 Zadig 系统中执行
    REPONAME_<index>1. 获取指定 <index> 的代码库名称
    2. 其中 <index> 为代码扫描配置中代码的位置,初始值为 0
    3. 下图例中,在构建脚本中使用 $REPO_0 即可获得第一个代码库的名称 voting-app
    REPO_<index>1. 获取指定 <index> 的代码库名称,并自动将名称中的中划线 - 替换为下划线 _
    2. 其中 <index> 为代码扫描配置中代码的位置,初始值为 0
    3. 下图例中,在构建脚本中使用 $REPO_0 即可获得第一个代码库转化后的名称 voting_app
    <REPO>_PR1. 获取代码扫描过程中指定 <REPO> 使用的 Pull Request 信息,使用时请将 <REPO> 替换为具体的代码库名称
    2. 当 <REPO> 信息中含有中划线 - 时,需要将 - 替换为下划线 _
    3. 下图例中希望获取 voting-app 库的 Pull Request 信息,使用 $voting_app_PR 或者 eval PR=\${${REPO_0}_PR} 即可
    4. 若构建时指定了多个 PR,比如指定的 PR ID 为 1、2、3,则该变量的值为 1,2,3
    5. 当代码库为其他代码源时,不支持该变量
    <REPO>_BRANCH1. 获取代码扫描过程中指定 <REPO> 使用的分支信息,使用时请将 <REPO> 替换为具体的代码库名称
    2. 当 <REPO> 信息中含有中划线 - 时,需要将 - 替换为下划线 _
    3. 下图例中希望获取 voting-app 库的分支信息,使用 $voting_app_BRANCH 或者 eval BRANCH=\${${REPO_0}_BRANCH}即可
    <REPO>_PRE_MERGE_BRANCHES1. 多分支合并构建时预合并分支,其中 <REPO> 是具体的代码仓库名称,使用时可以填写仓库名称或者结合 $<REPO_INDEX> 变量使用
    2. 当 <REPO> 信息中含有中划线 - 时,需要将 - 替换为下划线 _
    3. 比如可以通过 eval BRANCH=\${${REPO_0}_PRE_MERGE_BRANCHES} 方式获取第一个代码库的预合并分析信息
    <REPO>_TAG1. 获取代码扫描过程中指定 <REPO> 使用的 Tag 信息,使用时请将 <REPO> 替换为具体的代码库名称
    2. 当 <REPO> 信息中含有中划线 - 时,需要将 - 替换为下划线 _
    3. 下图例中希望获取 voting-app 库的 Tag 信息,使用 $voting_app_TAG 或者 eval TAG=\${${REPO_0}_TAG} 即可
    <REPO>_COMMIT_ID1. 获取代码扫描过程中指定 <REPO> 使用的 Commit ID 信息,使用时请将 <REPO> 替换为具体的代码库名称
    2. 当 <REPO> 信息中含有中划线 - 时,需要将 - 替换为下划线 _
    3. 下图例中希望获取 voting-app 库的 Commit ID 信息,使用 $voting_app_COMMIT_ID 或者 eval COMMIT_ID=\${${REPO_0}_COMMIT_ID} 即可
    4. 当代码库为其他代码源时,不支持该变量
    <REPO>_ORG1. 获取代码扫描过程中指定 <REPO> 使用的组织/用户信息,使用时请将 <REPO> 替换为具体的代码库名称
    2. 当 <REPO> 信息中含有中划线 - 时,需要将 - 替换为下划线 _
    3. 下图例中希望获取 voting-app 库的组织/用户信息,使用 $voting_app_ORG 或者 eval ORG=\${${REPO_0}_ORG} 即可

    自定义变量

    说明:

    • 支持使用字符串(单行/多行)、单选、多选、文件类型的变量
    • 支持设置变量为必填,如果必填,则执行时必须输入该变量的值
    • 可以设置字符串类型的变量为敏感信息,扫描日志中不会输出敏感变量的值

    # 扫描脚本

    按需配置扫描脚本,对代码进行扫描。 前置脚本配置

    # SonarScanner 扫描

    在添加步骤中可配置 SonarScanner 扫描,其中 sonar.host.url 和 sonar.login 无需配置,在执行代码扫描时系统会自动注入。更多参数配置参考 SonarQube 文档(opens new window)。

    代码扫描配置

    # 高级配置

    代码扫描配置

    说明:

    • 质量门禁检查:参考 质量门禁检查
    • 扫描结果导出:配置扫描报告路径
    • 超时时间:若超过设置的时间阈值后扫描仍未结束,则视为超时失败
    • 缓存配置:开启缓存后,代码扫描执行时会使用此处配置的缓存目录
    • 集群选择:选择代码扫描任务运行时所使用的集群资源,其中本地集群指 Zadig 系统所在的集群,参考集群管理集成更多集群资源
    • 操作系统规格:配置资源规格用于执行代码扫描任务。平台提供 高/中/低/最低 四种配置供选择。此外,还可以根据实际需要自定义,若需使用 GPU 资源,资源配置形式为 vendorname.com/gpu:num,更多信息参考 调度 GPU(opens new window)
    • 调度策略:选择集群调度策略,默认使用随机调度策略,集群调度策略管理参考 设置调度策略
    • 输出变量:将代码扫描中的环境变量输出,可实现工作流中不同任务之间的变量传递,参考 变量传递
    • 触发器与通知:配置 Webhook 事件,自动触发代码扫描任务执行,配置细节参考:触发器与通知

    # 触发器与通知

    # 触发器

    支持的代码源参考:代码源信息

    代码扫描配置

    参数说明:

    • 代码库:即代码信息配置中的代码库
    • 目标分支:监听代码变更事件的分支
    • 触发事件: 指定触发代码扫描运行的 Webhook 事件,可选事件如下:
      • Push commits 事件(Merge 操作)时触发
      • Pull requests 提交 pull request 时触发
      • Push tags 新建 tag 后触发
    • 自动取消:若勾选,则当多个 Webhook 事件先后触发代码扫描任务时,系统会自动取消队列中的任务
    • 文件目录: 当指定文件或目录发生变化(新增/修改/删除)时,触发代码扫描,使用以下代码仓库文件结构示例说明:
    ├── reponame  # 仓库名称
      ├── Dockerfile 
      ├── Makefile
      ├── README.md   
      ├── src        
        ├── service1/
        ├── service2/
        └── service3/
    
    1
    2
    3
    4
    5
    6
    7
    8
    触发场景文件目录配置
    所有文件更新/
    除 *.md 以外的其他文件更新/
    !.md
    除 service1 目录下的其他文件更新/
    !src/service1/
    service1 目录下所有文件更新src/service1/
    src 目录下(除 service1 目录下的文件)的文件更新src
    !src/service1/
    # 通知

    支持将代码扫描执行结果通知到钉钉、企业微信、飞书平台、邮件和 Webhook,配置参考 通知。

    代码扫描配置

    # 质量门禁检查

    在高级配置中开启质量门禁检查,开启后,Zadig 将从 SonarQube 中获取门禁规则,如果门禁未通过,任务状态将置为失败。同时返回具体规则和规则判定结果。

    质量门禁结果

    如需设置规则,可前往 SonarQube 系统,修改或新增 Quality Gate 配置。

    质量门禁修改

    # 使用

    选择具体的代码扫描 → 点击执行,可对指定分支或 Tag 中的代码进行扫描。

    执行代码扫描

    当代码扫描任务运行完毕,可点击链接快速跳转至 SonarQube 系统中查看结果。

    代码扫描配置

    # 自定义扫描

    使用第三方扫描工具对代码进行扫描。

    # 配置

    新建代码审查时,扫描类型选择自定义扫描。

    # 基本信息

    img

    • 名称:代码扫描名称,同一项目下不允许重复
    • 基础设施:支持在 Kubernetes 和主机上执行代码扫描任务
    • 扫描环境:执行扫描任务时的具体运行环境,可参考自定义镜像按需添加,可将扫描工具在自定义镜像中预先安装好。
    • 依赖的软件包:指定扫描过程中需要用到的各类软件包工具。

    # 代码信息、变量、扫描脚本

    与 Sonar 扫描 相同。扫描脚本按所选工具编写即可。

    # 高级配置、触发器与通知

    与 Sonar 扫描 相同。自定义扫描不支持质量门禁检查。

    # 使用

    选择具体的代码扫描 → 点击执行,可对指定分支或 Tag 中的代码进行扫描。

    执行代码扫描

    ← Apifox 测试平台接入AI 代码审查实践→

    资源
    教程
    论坛
    博客
    公司
    关于
    客户故事
    加入我们
    联系我们
    微信扫一扫
    hello@koderover.com

    © 2026 筑栈(上海)信息技术有限公司 沪 ICP 备 19000177 号 - 1

    •  跟随系统
    •  浅色模式
    •  深色模式
    •  阅读模式